// ecosystem.config.js
module.exports = {
  /**
   * 应用列表
   */
  apps: [
    {
      // 应用名称
      name: 'my-node-app',

      // 执行的脚本文件
      script: './app.js', // 替换为你的入口文件，如 server.js、index.js、dist/main.js 等

      // 工作目录
      cwd: '/综合后台管理系统', // Docker 中的路径，与 WORKDIR 一致

      // 启动模式：'fork' | 'cluster'
      // cluster 模式可利用多核 CPU
      exec_mode: 'cluster',

      // 实例数量（仅 cluster 模式有效）
      // 'max' 表示使用所有 CPU 核心
      // 1, 2, 3... 固定数量
      instances: 'max',

      // 自动重启
      autorestart: true,

      // 应用启动时的延迟（毫秒）
      restart_delay: 1000,

      // 环境变量
      env: {
        NODE_ENV: 'development',
        PORT: 3333,
        // 其他环境变量
        // MONGO_URI: 'mongodb://...',
      },

      // 生产环境变量
      env_production: {
        NODE_ENV: 'production',
        PORT: 3333,
        // 可在这里覆盖生产环境变量
      },

      // 日志文件路径（可选）
      // 在 Docker 中通常不需要，使用 stdout/stderr 更好
      // out_file: '/var/log/app.log',
      // error_file: '/var/log/app-error.log',
      // log_file: '/var/log/app-combined.log',

      // 不将日志写入文件，而是输出到控制台（推荐 Docker 使用）
      log_type: 'json',
      log_date_format: 'YYYY-MM-DD HH:mm:ss Z',

      // 最大内存限制（如超过则重启）
      max_memory_restart: '500M',

      // 启动时传递的参数
      // node_args: '--inspect',
      // args: '--key=value',

      // 监视文件变化并自动重启（开发环境）
      // watch: false, // 生产环境关闭
      // ignore_watch: ['node_modules', 'logs', 'public']

      // 启动超时
      max_memory_restart: '200M',
      kill_timeout: 5000,
      listen_timeout: 10000,
    },
  ],

  /**
   * 部署配置（可选）
   */
//   deploy: {
//     production: {
//       user: 'root',
//       host: 'your-server-ip',
//       ref: 'origin/main',
//       repo: 'git@github.com:username/repo.git',
//       path: '/var/www/my-node-app',
//       'post-deploy': 'npm install && pm2 reload ecosystem.config.js --env production',
//     },
//   },
};
